Use glib-sys via re-exported `glib::ffi` (and similar for gio)
authorColin Walters <walters@verbum.org>
Tue, 3 Aug 2021 19:41:30 +0000 (15:41 -0400)
committerColin Walters <walters@verbum.org>
Fri, 6 May 2022 16:53:57 +0000 (12:53 -0400)
In general only `-sys` crates should depend on other `-sys`
crates.  IOW for us, `ostree-sys` depends on `glib-sys`.

By using the re-export, we avoid needing to keep a version lock
between `glib` and `glib-sys` in our main crate.  And similar
is true of our higher level reverse dependencies (e.g. `ostree-rs-ext`).

Also weaken our dependency to `0.14` as that's clearer.

rust-bindings/rust/.gitlab-ci.yml
rust-bindings/rust/Cargo.toml
rust-bindings/rust/src/checksum.rs
rust-bindings/rust/src/functions.rs
rust-bindings/rust/src/object_name.rs
rust-bindings/rust/src/repo.rs
rust-bindings/rust/src/repo_checkout_at_options/mod.rs
rust-bindings/rust/src/repo_checkout_at_options/repo_checkout_filter.rs
rust-bindings/rust/src/repo_transaction_stats.rs
rust-bindings/rust/src/sysroot_write_deployments_opts.rs
rust-bindings/rust/sys/Cargo.toml

index 4a7b1e58df6eb45113da79c34ed611c96d140231..fe56a21fc46208f3abf64e27d27ceecf1d9aaa09 100644 (file)
@@ -60,9 +60,6 @@ pages:
   variables:
     RUSTDOCFLAGS: >-
       -Z unstable-options
-      --extern-html-root-url glib_sys=https://gtk-rs.org/docs
-      --extern-html-root-url gobject_sys=https://gtk-rs.org/docs
-      --extern-html-root-url gio_sys=https://gtk-rs.org/docs
       --extern-html-root-url glib=https://gtk-rs.org/docs
       --extern-html-root-url gio=https://gtk-rs.org/docs
   script:
index d688a5efcf4bb8cf30fb347f82108c714bae2aaf..b31de9d614aa0ce3f6421bae642db17bd02ac74b 100644 (file)
@@ -30,11 +30,8 @@ members = [".", "sys"]
 [dependencies]
 bitflags = "1.2.1"
 ffi = { package = "ostree-sys", path = "sys", version = "0.8.1" }
-gio = "0.14.0"
-gio-sys = "0.14.0"
-glib = "0.14.0"
-glib-sys = "0.14.0"
-gobject-sys = "0.14.0"
+gio = "0.14"
+glib = "0.14"
 hex = "0.4.2"
 libc = "0.2"
 once_cell = "1.4.0"
index 454c98849af712ea2f33b17e60a80d61c56d893a..4cc981645d383e6a932d26ab6c72816c093caf6d 100644 (file)
@@ -1,5 +1,5 @@
+use glib::ffi::{g_free, g_malloc0, gpointer};
 use glib::translate::{FromGlibPtrFull, FromGlibPtrNone};
-use glib_sys::{g_free, g_malloc0, gpointer};
 use once_cell::sync::OnceCell;
 use std::ptr::copy_nonoverlapping;
 
@@ -168,8 +168,8 @@ impl FromGlibPtrNone<*mut [u8; BYTES_LEN]> for Checksum {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use glib::ffi::g_malloc0;
     use glib::translate::from_glib_full;
-    use glib_sys::g_malloc0;
 
     const CHECKSUM_BYTES: &[u8; BYTES_LEN] = b"\xbf\x87S\x06x>\xfd\xc5\xbc\xab7\xea\x10\xb6\xcaN\x9bj\xea\x8b\x94X\r\x0c\xa9J\xf1 V\\\x0e\x8a";
     const CHECKSUM_HEX: &str = "bf875306783efdc5bcab37ea10b6ca4e9b6aea8b94580d0ca94af120565c0e8a";
index 053f0c57cfd7347493d25117677340e38d428389..309a1799fed6d5c9bd767eddd73965ea6044c2c6 100644 (file)
@@ -1,8 +1,8 @@
 #[cfg(any(feature = "v2017_13", feature = "dox"))]
 use crate::ChecksumFlags;
 use crate::{Checksum, ObjectType};
+use glib::ffi::GFALSE;
 use glib::{prelude::*, translate::*};
-use glib_sys::GFALSE;
 use std::{future::Future, mem::MaybeUninit, pin::Pin, ptr};
 
 /// Compute the SHA-256 checksum of a file.
@@ -41,9 +41,9 @@ pub fn checksum_file_async<
     unsafe extern "C" fn checksum_file_async_trampoline<
         R: FnOnce(Result<Checksum, Box<dyn std::error::Error>>) + Send + 'static,
     >(
-        _source_object: *mut gobject_sys::GObject,
-        res: *mut gio_sys::GAsyncResult,
-        user_data: glib_sys::gpointer,
+        _source_object: *mut glib::gobject_ffi::GObject,
+        res: *mut gio::ffi::GAsyncResult,
+        user_data: glib::ffi::gpointer,
     ) {
         let mut error = ptr::null_mut();
         let mut out_csum = MaybeUninit::uninit();
@@ -145,7 +145,7 @@ pub fn checksum_file_at<P: IsA<gio::Cancellable>>(
 
 unsafe fn checksum_file_error(
     out_csum: *mut [*mut u8; 32],
-    error: *mut glib_sys::GError,
+    error: *mut glib::ffi::GError,
     ret: i32,
 ) -> Result<Checksum, Box<dyn std::error::Error>> {
     if !error.is_null() {
index 9064de358c0bae90879202eca56d9ca66a647aa6..a69fee67998d79766e207d07278458cd7cffe651 100644 (file)
@@ -3,7 +3,6 @@ use crate::{object_name_deserialize, object_name_serialize, object_to_string};
 use glib;
 use glib::translate::*;
 use glib::GString;
-use glib_sys;
 use std::fmt::Display;
 use std::fmt::Error;
 use std::fmt::Formatter;
@@ -11,7 +10,7 @@ use std::hash::Hash;
 use std::hash::Hasher;
 
 fn hash_object_name(v: &glib::Variant) -> u32 {
-    unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib_sys::gconstpointer) }
+    unsafe { ffi::ostree_hash_object_name(v.to_glib_none().0 as glib::ffi::gconstpointer) }
 }
 
 /// A reference to an object in an OSTree repo. It contains both a checksum and an
index 3f9434ae356fc782b8b1559bd3a018ca8d6a2162..d6ffeb41f5e8e4ea05e534440f506854531e56b9 100644 (file)
@@ -2,9 +2,8 @@
 use crate::RepoListRefsExtFlags;
 use crate::{Checksum, ObjectName, ObjectType, Repo};
 use ffi;
-use gio_sys;
+use glib::ffi as glib_sys;
 use glib::{self, translate::*, Error, IsA};
-use glib_sys;
 use std::{
     collections::{HashMap, HashSet},
     future::Future,
@@ -193,9 +192,9 @@ impl Repo {
         unsafe extern "C" fn write_content_async_trampoline<
             R: FnOnce(Result<Checksum, Error>) + Send + 'static,
         >(
-            _source_object: *mut gobject_sys::GObject,
-            res: *mut gio_sys::GAsyncResult,
-            user_data: glib_sys::gpointer,
+            _source_object: *mut glib::gobject_ffi::GObject,
+            res: *mut gio::ffi::GAsyncResult,
+            user_data: glib::ffi::gpointer,
         ) {
             let mut error = ptr::null_mut();
             let mut out_csum = MaybeUninit::uninit();
@@ -268,8 +267,8 @@ impl Repo {
         unsafe extern "C" fn write_metadata_async_trampoline<
             Q: FnOnce(Result<Checksum, Error>) + Send + 'static,
         >(
-            _source_object: *mut gobject_sys::GObject,
-            res: *mut gio_sys::GAsyncResult,
+            _source_object: *mut glib::gobject_ffi::GObject,
+            res: *mut gio::ffi::GAsyncResult,
             user_data: glib_sys::gpointer,
         ) {
             let mut error = ptr::null_mut();
index d75691310e5eca63b562ef6e1ecc06921d99bdc5..9e47017de7df1fa6c37fd16a5fb0f3a6b9c3995b 100644 (file)
@@ -166,7 +166,7 @@ impl<'a> ToGlibPtr<'a, *const ffi::OstreeRepoCheckoutAtOptions> for RepoCheckout
 #[cfg(test)]
 mod tests {
     use super::*;
-    use glib_sys::{GFALSE, GTRUE};
+    use glib::ffi::{GFALSE, GTRUE};
     use std::ffi::{CStr, CString};
     use std::ptr;
 
index 6f193b6679004c3d10da2d2a12cb0066414bd539..17310e42162399254b65f4dec4506f01f46b4036 100644 (file)
@@ -1,6 +1,6 @@
 use crate::{Repo, RepoCheckoutFilterResult};
+use glib::ffi::gpointer;
 use glib::translate::*;
-use glib_sys::gpointer;
 use libc::c_char;
 use std::any::Any;
 use std::panic::catch_unwind;
index aa587b1d64e48f2d1c85e816eaeb6c1083df46a3..1d12531b758e2b1d85992382a3abf3b4d7fca2a0 100644 (file)
@@ -1,13 +1,11 @@
-use gobject_sys;
-
 glib::wrapper! {
     /// A list of statistics for each transaction that may be interesting for reporting purposes.
     #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
     pub struct RepoTransactionStats(Boxed<ffi::OstreeRepoTransactionStats>);
 
     match fn {
-        copy => |ptr| gobject_sys::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats,
-        free => |ptr| gobject_sys::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _),
+        copy => |ptr| glib::gobject_ffi::g_boxed_copy(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _) as *mut ffi::OstreeRepoTransactionStats,
+        free => |ptr| glib::gobject_ffi::g_boxed_free(ffi::ostree_repo_transaction_stats_get_type(), ptr as *mut _),
         init => |_ptr| (),
         clear => |_ptr| (),
         type_ => || ffi::ostree_repo_transaction_stats_get_type(),
index 8c91016027bae1b24f2d4a1fa0ee23af01f82732..81c436c338115a0b8fdeec079916d31b8250aa65 100644 (file)
@@ -33,7 +33,7 @@ impl<'a> ToGlibPtr<'a, *const OstreeSysrootWriteDeploymentsOpts> for SysrootWrit
 #[cfg(test)]
 mod tests {
     use super::*;
-    use glib_sys::{GFALSE, GTRUE};
+    use glib::ffi::{GFALSE, GTRUE};
 
     #[test]
     fn should_convert_default_options() {
index 5641773f44ab526db97d4f5752bae115a6d4b1ee..d77295254b47084dcfbe5f4ef602dac6ceeedd17 100644 (file)
@@ -5,9 +5,9 @@ repository = "fkrull/ostree-rs"
 system-deps = "3"
 
 [dependencies]
-glib-sys = "0.14.0"
-gobject-sys = "0.14.0"
-gio-sys = "0.14.0"
+glib-sys = "0.14"
+gobject-sys = "0.14"
+gio-sys = "0.14"
 libc = "0.2"
 
 [dev-dependencies]